package org.jsola.hr.provider;

import org.jsola.core.Page;
import org.jsola.log.query.ActionLogQuery;
import org.jsola.log.query.ServiceLogQuery;
import org.jsola.log.vo.ActionLogListVO;
import org.jsola.log.vo.ServiceLogListVO;
import org.jsola.user.core.TokenUser;

/**
 * @author june
 */
public interface ILogProviderService {
    /**
     * 保存service日志
     * @param content     日志内容 不能为空
     * @param actionType  @see org.jsola.log.constant.ActionType 如果为null默认是0
     * @param subjectType 业务类型 如果为null默认是system
     * @param subjectId   业务id 如果为null默认是0
     * @param tokenUser   当前用户 如果为null 默认站点id和用户id都是system
     */
    void log(String content, Integer actionType, String subjectType, String subjectId, TokenUser tokenUser);

    /**
     * 保存service日志
     * @param content     日志内容 不能为空
     * @param actionType  @see org.jsola.log.constant.ActionType 如果为null默认是0
     * @param subjectType 业务类型 如果为null默认是system
     * @param subjectId   业务id 如果为null默认是0
     * @param contentId 业务id(人力为公司Id,看具体业务)
     * @param tokenUser   当前用户 如果为null 默认站点id和用户id都是system
     */
    void log(String content, Integer actionType, String subjectType,
             String subjectId, String contentId, TokenUser tokenUser);


    /**
     * 分页查询请求日志
     * @param actionLogQuery 查询条件
     * @param siteId 所属站点id
     * @return 请求日志列表信息
     */
    Page<ActionLogListVO> selectActionLogPage(ActionLogQuery actionLogQuery, String siteId);

    /**
     * 分页查询服务日志
     * @param serviceLogQuery 查询条件
     * @param siteId 所属站点id
     * @return 服务日志列表信息
     */
    Page<ServiceLogListVO> selectServiceLogPage(ServiceLogQuery serviceLogQuery, String siteId);

    /**
     * 分页查询服务日志 跨站点
     * @param serviceLogQuery 查询条件
     * @return 服务日志列表信息
     */
    Page<ServiceLogListVO> selectServiceLogPageNotSiteId(ServiceLogQuery serviceLogQuery);

}
